itk_module_test()
set(
  ITKMetricsv4Tests
  itkEuclideanDistancePointSetMetricTest.cxx
  itkExpectationBasedPointSetMetricTest.cxx
  itkJensenHavrdaCharvatTsallisPointSetMetricTest.cxx
  itkJensenHavrdaCharvatTsallisPointSetMetricRegistrationTest.cxx
  itkLabeledPointSetMetricTest.cxx
  itkLabeledPointSetMetricRegistrationTest.cxx
  itkImageToImageMetricv4Test.cxx
  itkJointHistogramMutualInformationImageToImageMetricv4Test.cxx
  itkJointHistogramMutualInformationImageToImageRegistrationTest.cxx
  itkMeanSquaresImageToImageMetricv4Test.cxx
  itkCorrelationImageToImageMetricv4Test.cxx
  itkMeanSquaresImageToImageMetricv4OnVectorTest.cxx
  itkMeanSquaresImageToImageMetricv4OnVectorTest2.cxx
  itkANTSNeighborhoodCorrelationImageToImageMetricv4Test.cxx
  itkANTSNeighborhoodCorrelationImageToImageRegistrationTest.cxx
  itkMattesMutualInformationImageToImageMetricv4Test.cxx
  itkMattesMutualInformationImageToImageMetricv4RegistrationTest.cxx
  itkMultiStartImageToImageMetricv4RegistrationTest.cxx
  itkMultiGradientImageToImageMetricv4RegistrationTest.cxx
  itkMetricImageGradientTest.cxx
  itkMeanSquaresImageToImageMetricv4RegistrationTest.cxx
  itkMeanSquaresImageToImageMetricv4RegistrationTest2.cxx
  itkImageToImageMetricv4RegistrationTest.cxx
  itkDemonsImageToImageMetricv4Test.cxx
  itkDemonsImageToImageMetricv4RegistrationTest.cxx
  itkEuclideanDistancePointSetMetricRegistrationTest.cxx
  itkExpectationBasedPointSetMetricRegistrationTest.cxx
  itkEuclideanDistancePointSetMetricTest2.cxx
  itkEuclideanDistancePointSetMetricTest3.cxx
  itkObjectToObjectMultiMetricv4Test.cxx
  itkObjectToObjectMultiMetricv4RegistrationTest.cxx
  itkMeanSquaresImageToImageMetricv4SpeedTest.cxx
  itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.cxx
)

set(INPUTDATA ${ITK_DATA_ROOT}/Input)
set(BASELINE_ROOT ${ITK_DATA_ROOT}/Baseline)
set(TEMP ${ITK_TEST_OUTPUT_DIR})

createtestdriver(ITKMetricsv4 "${ITKMetricsv4-Test_LIBRARIES}" "${ITKMetricsv4Tests}")

itk_add_test(
  NAME
  itkEuclideanDistancePointSetMetricTest
  COMMAND
  ITKMetricsv4TestDriver
  itkEuclideanDistancePointSetMetricTest
)

itk_add_test(
  NAME
  itkEuclideanDistancePointSetMetricTest2
  COMMAND
  ITKMetricsv4TestDriver
  itkEuclideanDistancePointSetMetricTest2
)

itk_add_test(
  NAME
  itkEuclideanDistancePointSetMetricTest3
  COMMAND
  ITKMetricsv4TestDriver
  itkEuclideanDistancePointSetMetricTest3
)

itk_add_test(
  NAME
  itkExpectationBasedPointSetMetricTest
  COMMAND
  ITKMetricsv4TestDriver
  itkExpectationBasedPointSetMetricTest
)

itk_add_test(
  NAME
  itkJensenHavrdaCharvatTsallisPointSetMetricTest
  COMMAND
  ITKMetricsv4TestDriver
  itkJensenHavrdaCharvatTsallisPointSetMetricTest
)

itk_add_test(
  NAME
  itkJensenHavrdaCharvatTsallisPointSetMetricRegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkJensenHavrdaCharvatTsallisPointSetMetricRegistrationTest
)

itk_add_test(
  NAME
  itkLabeledPointSetMetricTest
  COMMAND
  ITKMetricsv4TestDriver
  itkLabeledPointSetMetricTest
)

itk_add_test(
  NAME
  itkLabeledPointSetMetricRegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkLabeledPointSetMetricRegistrationTest
)

itk_add_test(
  NAME
  itkImageToImageMetricv4Test
  COMMAND
  ITKMetricsv4TestDriver
  itkImageToImageMetricv4Test
)

itk_add_test(
  NAME
  itkJointHistogramMutualInformationImageToImageMetricv4Test
  COMMAND
  ITKMetricsv4TestDriver
  itkJointHistogramMutualInformationImageToImageMetricv4Test
)

itk_add_test(
  NAME
  itkJointHistogramMutualInformationImageToImageRegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkJointHistogramMutualInformationImageToImageRegistrationTest
  ${ITK_EXAMPLE_DATA_ROOT}/BrainProtonDensitySliceBorder20.png
  ${ITK_EXAMPLE_DATA_ROOT}/BrainProtonDensitySliceBSplined10.png
  ${TEMP}/itkJointHistogramMutualInformationImageToImageRegistrationTest.nii.gz
  2
  1
)

itk_add_test(
  NAME
  itkJointHistogramMutualInformationImageToImageRegistrationTest2
  COMMAND
  ITKMetricsv4TestDriver
  itkJointHistogramMutualInformationImageToImageRegistrationTest
  DATA{Baseline/face_avg.jpg}
  DATA{Input/face_b.jpg}
  ${TEMP}/itkJointHistogramMutualInformationImageToImageRegistrationTest2.nii.gz
  2
  1
)

itk_add_test(
  NAME
  itkMeanSquaresImageToImageMetricv4Test
  COMMAND
  ITKMetricsv4TestDriver
  itkMeanSquaresImageToImageMetricv4Test
)

itk_add_test(
  NAME
  itkCorrelationImageToImageMetricv4Test
  COMMAND
  ITKMetricsv4TestDriver
  itkCorrelationImageToImageMetricv4Test
)

itk_add_test(
  NAME
  itkMeanSquaresImageToImageMetricv4OnVectorTest
  COMMAND
  ITKMetricsv4TestDriver
  itkMeanSquaresImageToImageMetricv4OnVectorTest
)

itk_add_test(
  NAME
  itkMeanSquaresImageToImageMetricv4OnVectorTest2
  COMMAND
  ITKMetricsv4TestDriver
  itkMeanSquaresImageToImageMetricv4OnVectorTest2
)

itk_add_test(
  NAME
  itkANTSNeighborhoodCorrelationImageToImageMetricv4Test
  COMMAND
  ITKMetricsv4TestDriver
  itkANTSNeighborhoodCorrelationImageToImageMetricv4Test
)

itk_add_test(
  NAME
  itkANTSNeighborhoodCorrelationImageToImageRegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkANTSNeighborhoodCorrelationImageToImageRegistrationTest
  ${ITK_EXAMPLE_DATA_ROOT}/BrainProtonDensitySliceBorder20.png
  ${ITK_EXAMPLE_DATA_ROOT}/BrainProtonDensitySliceBSplined10.png
  ${TEMP}/itkANTSNeighborhoodCorrelationImageToImageRegistrationTest.nii.gz
  1
  1
  0.25
)

itk_add_test(
  NAME
  itkMattesMutualInformationImageToImageMetricv4Test
  COMMAND
  ITKMetricsv4TestDriver
  itkMattesMutualInformationImageToImageMetricv4Test
)

itk_add_test(
  NAME
  itkMattesMutualInformationImageToImageMetricv4RegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkMattesMutualInformationImageToImageMetricv4RegistrationTest
  DATA{Baseline/face_avg.jpg}
  DATA{Input/face_b.jpg}
  ${TEMP}/itkMattesMutualInformationImageToImageMetricv4RegistrationTest.nii.gz
  5
  0
)

itk_add_test(
  NAME
  itkMultiStartImageToImageMetricv4RegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkMultiStartImageToImageMetricv4RegistrationTest
  DATA{Baseline/face_avg.jpg}
  DATA{Input/face_b.jpg}
  ${TEMP}/itkMultiStartImageToImageMetricv4RegistrationTest.nii.gz
  5
  1
)

itk_add_test(
  NAME
  itkMultiGradientImageToImageMetricv4RegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkMultiGradientImageToImageMetricv4RegistrationTest
  DATA{Baseline/face_avg.jpg}
  DATA{Input/face_b.jpg}
  ${TEMP}/itkMultiGradientImageToImageMetricv4RegistrationTest.nii.gz
  5
)

itk_add_test(
  NAME
  itkMetricImageGradientTest
  COMMAND
  ITKMetricsv4TestDriver
  itkMetricImageGradientTest
)

itk_add_test(
  NAME
  itkMeanSquaresImageToImageMetricv4RegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkMeanSquaresImageToImageMetricv4RegistrationTest
  DATA{Baseline/face_avg.jpg}
  DATA{Input/face_b.jpg}
  ${TEMP}/itkMeanSquaresImageToImageMetricv4RegistrationTest.nii.gz
  2
  1
)

itk_add_test(
  NAME
  itkMeanSquaresImageToImageMetricv4RegistrationTest2
  COMMAND
  ITKMetricsv4TestDriver
  itkMeanSquaresImageToImageMetricv4RegistrationTest2
  DATA{${INPUTDATA}/r16slice.nii.gz}
  DATA{${INPUTDATA}/r64slice.nii.gz}
  ${TEMP}/itkMeanSquaresImageToImageMetricv4RegistrationTest2.nii.gz
)

itk_add_test(
  NAME
  itkImageToImageMetricv4RegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkImageToImageMetricv4RegistrationTest
  75 #iterations1
  0.8 #maxStepSize1
  120 #iterations2
  0.1 #maxStepSize2
  0 #doSampling
  0 #useGradientFilter
)

itk_add_test(
  NAME
  itkImageToImageMetricv4RegistrationTest2
  COMMAND
  ITKMetricsv4TestDriver
  itkImageToImageMetricv4RegistrationTest
  47 #iterations1
  1.0 #maxStepSize1
  120 #iterations2
  0.1 #maxStepSize2
  1 #doSampling
  0 #useGradientFilter
)

itk_add_test(
  NAME
  itkImageToImageMetricv4RegistrationTest3
  COMMAND
  ITKMetricsv4TestDriver
  itkImageToImageMetricv4RegistrationTest
  50 #iterations1
  1.0 #maxStepSize1
  120 #iterations2
  0.1 #maxStepSize2
  0 #doSampling
  1 #useGradientFilter
)

itk_add_test(
  NAME
  itkDemonsImageToImageMetricv4Test
  COMMAND
  ITKMetricsv4TestDriver
  itkDemonsImageToImageMetricv4Test
)

itk_add_test(
  NAME
  itkDemonsImageToImageMetricv4RegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  --with-threads
  1
  --compare
  DATA{Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F0.nii.gz}
  ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest.nii.gz
  itkDemonsImageToImageMetricv4RegistrationTest
  DATA{${INPUTDATA}/r16slice.nii.gz}
  DATA{${INPUTDATA}/r64slice.nii.gz}
  ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest.nii.gz
  35 #iterations
  0 #sampling
  0 #image gradient filter
)

itk_add_test(
  NAME
  itkDemonsImageToImageMetricv4RegistrationTest2
  COMMAND
  ITKMetricsv4TestDriver
  --with-threads
  1
  --compare
  DATA{Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S1_T1_F0.nii.gz}
  ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest2.nii.gz
  itkDemonsImageToImageMetricv4RegistrationTest
  DATA{${INPUTDATA}/r16slice.nii.gz}
  DATA{${INPUTDATA}/r64slice.nii.gz}
  ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest2.nii.gz
  35 #iterations
  1 #sampling
  0 #image gradient filter
)

itk_add_test(
  NAME
  itkDemonsImageToImageMetricv4RegistrationTest3
  COMMAND
  ITKMetricsv4TestDriver
  --with-threads
  1
  --compare
  DATA{Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F1.nii.gz}
  ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest3.nii.gz
  itkDemonsImageToImageMetricv4RegistrationTest
  DATA{${INPUTDATA}/r16slice.nii.gz}
  DATA{${INPUTDATA}/r64slice.nii.gz}
  ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest3.nii.gz
  35 #iterations
  0 #sampling
  1 #image gradient filter
)

itk_add_test(
  NAME
  itkEuclideanDistancePointSetMetricRegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkEuclideanDistancePointSetMetricRegistrationTest
)

itk_add_test(
  NAME
  itkExpectationBasedPointSetMetricRegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkExpectationBasedPointSetMetricRegistrationTest
)

itk_add_test(
  NAME
  itkObjectToObjectMultiMetricv4Test
  COMMAND
  ITKMetricsv4TestDriver
  itkObjectToObjectMultiMetricv4Test
)

itk_add_test(
  NAME
  itkObjectToObjectMultiMetricv4RegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  itkObjectToObjectMultiMetricv4RegistrationTest
)

itk_add_test(
  NAME
  itkMeanSquaresImageToImageMetricv4VectorRegistrationTest
  COMMAND
  ITKMetricsv4TestDriver
  --with-threads
  1
  --compare
  DATA{Baseline/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz}
  ${TEMP}/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz
  itkMeanSquaresImageToImageMetricv4VectorRegistrationTest
  DATA{Input/orange.jpg}
  DATA{Input/apple.jpg}
  ${TEMP}/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz
  100
  25
)
